package com.woniuxy.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.entity.AllMenu;
import com.woniuxy.entity.DTO.MenuQueryDTO;
import com.woniuxy.entity.VO.MenuVO;
import com.woniuxy.util.PageResult;

import java.util.List;

/**
 * @Author pml
 * @Date 2025/7/15 11:57
 * @Description TODO
 * 菜单服务接口
 * 定义菜单相关的业务逻辑方法
 */
public interface MenuService extends IService<AllMenu> {

    /**
     * 获取侧边栏菜单数据
     * 此处设计为无参方法，实际项目中可根据用户权限动态过滤菜单
     * @return 菜单列表（树形结构）
     */
    List<MenuVO> getSideMenu();

    /**
     * 分页多条件查询菜单列表
     * 支持按标题、状态、创建时间等条件筛选
     * @param queryDTO 查询条件和分页参数
     * @return 分页结果对象
     */
    PageResult<AllMenu> getMenuList(MenuQueryDTO queryDTO);

    /**
     * 保存新菜单
     * 包含数据校验和默认值设置
     * @param menu 菜单信息
     * @return 保存是否成功
     */
    boolean saveMenu(AllMenu menu);

    /**
     * 更新菜单信息
     * 包含数据校验，防止更新不存在的菜单
     * @param menu 菜单信息
     * @return 更新是否成功
     */
    boolean updateMenu(AllMenu menu);

    /**
     * 删除菜单
     * 采用逻辑删除，将状态改为禁用
     * @param menuId 菜单ID
     * @return 删除是否成功
     */
    boolean deleteMenu(Integer menuId);

    /**
     * 批量逻辑删除菜单
     * @param menuIds 菜单ID列表
     * @return 是否删除成功
     */
    boolean batchDeleteMenu(List<Integer> menuIds);
}
